home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / benchmarks / read.mgbaker / oldreadtest_c < prev    next >
Text File  |  1989-09-01  |  2KB  |  81 lines

  1. #include <stdio.h>
  2. #include <sys/types.h>
  3. #include <sys/file.h>
  4. #include <sys/time.h>
  5. #ifdef sprite
  6. #include "proc.h"
  7. #endif
  8.  
  9. #define MAX_SIZE    4*1024*1024
  10.  
  11. struct tests {
  12.     int    size;
  13.     int numreps;
  14. }  tests[] = { { 1, 1000000}, {1024, 10000}, {4*1024, 10000}, {8*1024, 10000},
  15.            {16*1024, 10000}, {32*1024, 10000}, {64*1024, 10000},
  16.            {128*1024, 1000}, {512*1024, 1000}, {1024*1024, 1000},
  17.            {512*1024, 1000}, {1024*1024, 1000}, {4*1024*1024, 100},
  18.            {0,0} };
  19.  
  20. main(argc, argv)
  21.     int argc;
  22.     char *argv[];
  23. {
  24.     register     int     i, j;
  25.     char    fileName[128];
  26.     int        numReps, size;
  27.     int        fd;
  28.     struct timeval stp, etp;
  29.     struct tests *t;
  30.     char *buf, *rbuf;
  31.  
  32.     buf = (char *)malloc(MAX_SIZE);
  33.     if (buf == (char *) NULL) {
  34.     fprintf(stderr,"Can't malloc buffer of %d bytes\n", MAX_SIZE);
  35.     exit(1);
  36.     }
  37.     (void) strcpy(fileName,"tmpXXXXXX");
  38.     mkstemp(fileName);
  39.     fd = open(fileName, O_RDWR, 0);
  40.     if (fd < 0) {
  41.     perror("open");
  42.     fprintf(stderr,"Can't open %s\n",fileName);
  43.     exit(1);
  44.     }
  45.     unlink(fileName);
  46.  
  47.     for (t = tests; t->numreps > 0; t++) {
  48.     for (j = 0; j < 1000; j++) { 
  49.         rbuf = buf+(j*4096);
  50.         bzero(rbuf,4096);
  51.         gettimeofday(&stp,0);
  52.         for (i = 0; i < 10*1000; i++) {
  53.          lseek(fd,0L,L_SET);
  54.         }
  55.         gettimeofday(&etp,0);
  56.         fixtime(&stp,&etp);
  57.          printf("seek time %4d.%-03d\n", etp.tv_sec, etp.tv_usec/1000);
  58.         gettimeofday(&stp,0);
  59.         for (i = 0; i < 10*1000; i++) {
  60.         lseek(fd,0L,L_SET);
  61.         read(fd,rbuf,4096); 
  62.         }
  63.         gettimeofday(&etp,0);
  64.         fixtime(&stp,&etp);
  65.         printf("seek and read to 0x%x time %4d.%-03d\n",rbuf, etp.tv_sec, etp.tv_usec/1000);
  66.         sleep(10);
  67.     }
  68.     }
  69. }
  70. fixtime(s, e)
  71.         struct  timeval *s, *e;
  72. {
  73.  
  74.         e->tv_sec -= s->tv_sec;
  75.         e->tv_usec -= s->tv_usec;
  76.         if (e->tv_usec < 0) {
  77.                 e->tv_sec--; e->tv_usec += 1000000;
  78.         }
  79. }
  80.  
  81.